Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: マナが無くなったら掘れなくするパッシブスキルを追加 #2370

Open
wants to merge 19 commits into
base: 1_18
Choose a base branch
from

Conversation

kuroma6666
Copy link
Contributor

@kuroma6666 kuroma6666 commented Aug 31, 2024

close #1964


このPRの変更点と理由:

主な変更点

  • パッシブスキルに対して、スキルをONにしている際にマナを消費しきった際に整地スキルによってブロック破壊しない設定を追加

補足情報:

  • デフォルト設定値はOFF設定とする(初心者プレイヤー詰み防止)
  • パッシブスキル設定は永続化することとしました

@kuroma6666 kuroma6666 force-pushed the feat-digging-stop-mana-fully-consumed branch 2 times, most recently from 14a859f to 571abd3 Compare September 14, 2024 17:30
@kuroma6666 kuroma6666 marked this pull request as ready for review September 14, 2024 17:38
@kuroma6666
Copy link
Contributor Author

@rito528
ご確認よろしくお願いします。

Copy link
Member

@rito528 rito528 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

develop ブランチの変更を取り込んでしまっているようなので、 git rebase --rebase-merges 1_18 などを実行して develop ブランチの変更をコミット履歴から消していただけると助かります🙇‍♂️🙇‍♂️

@kuroma6666
Copy link
Contributor Author

了解です。

@kuroma6666 kuroma6666 force-pushed the feat-digging-stop-mana-fully-consumed branch 2 times, most recently from bb09299 to 509644b Compare September 15, 2024 06:27
@kuroma6666 kuroma6666 force-pushed the feat-digging-stop-mana-fully-consumed branch from 509644b to e7c7cd3 Compare September 15, 2024 06:46
@kuroma6666
Copy link
Contributor Author

@rito528
developブランチの変更を取り込んでしまっていた内容については削除しました。

Copy link
Member

@rito528 rito528 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

一旦2つ変更をお願いします

@kuroma6666
Copy link
Contributor Author

kuroma6666 commented Sep 21, 2024

一旦2つ変更をお願いします

@rito528
一旦変更かけました

@kuroma6666
Copy link
Contributor Author

@rito528
レビュー内容について対応実施しました、再確認お願いします。

Copy link
Member

@rito528 rito528 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テーブル構成が変わることで今と実装がかなり変わりそうなので、一度以下の内容の変更をお願いします!

@kuroma6666
Copy link
Contributor Author

テーブル構成が変わることで今と実装がかなり変わりそうなので、一度以下の内容の変更をお願いします!

@rito528
一旦変更をかけたので、確認お願いします。

@@ -0,0 +1,28 @@
package com.github.unchama.seichiassist.subsystems.breakskilltriggerconfig.domain

case class BreakSkillTriggerConfig(config: Map[BreakSkillTriggerConfigKey, Boolean]) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

914bf47 の変更で、この subsystem は「マナがなくなった時に採掘機能を停止するか」を扱うと決めたので、この case class では「設定が有効か無効か」を保持できれば十分だと思います。

なので

Suggested change
case class BreakSkillTriggerConfig(config: Map[BreakSkillTriggerConfigKey, Boolean]) {
case class BreakSuppressionPreference(doBreakSuppression: Boolean) {

とすると良いと思います。(ついでにファイル名も BreakSuppressionPreference.scala とすると良いと思います)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BreakSkillTriggerConfig に対して書いたレビューに沿った変更が行われると、BreakSkillTriggerConfigKey の定義が不要になると思います。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SQL 周りも現在のテーブルスキーマに合わせた実装に変更をお願いします!

Comment on lines +15 to +21
def tryConsume(amount: ManaAmount)(manaMultiplier: ManaMultiplier): Option[ManaAmount] = {
val resultingAmount = value
Option.when(resultingAmount >= amount.multiply(manaMultiplier.value).value)(
ManaAmount(resultingAmount)
)
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tryConsume 関数を新たに定義する必要はないかもしれません。

この関数を使用しているのは canAcquire 関数ですが、canAcquire 関数は「任意の分だけマナを消費することができるか」を確認する関数なので、tryUse 関数を呼び出すことで必要な要件を満たせると思います
(tryUse 関数は消費したいマナに manaMultiplier をかけ合わせた分を、現在のマナから引いて、負の値になるならば None を返す関数なので)

Comment on lines +63 to +70
dragonNightTimeMultiplierRef.get.flatMap { multiplier =>
ref.modify { original =>
original.tryConsume(amount)(multiplier) match {
case Some(reduced) => (reduced, true)
case None => (original, false)
}
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

canAcquire 関数は「amount だけマナを消費することが可能ならば true、そうでないなら false を返す作用」なので、ref.modify を実行してしまうとまずいです(ref の値を更新してしまっているので)

なので

Suggested change
dragonNightTimeMultiplierRef.get.flatMap { multiplier =>
ref.modify { original =>
original.tryConsume(amount)(multiplier) match {
case Some(reduced) => (reduced, true)
case None => (original, false)
}
}
}
for {
multiplier <- dragonNightTimeMultiplierRef.get
original <- ref.get
usedResult <- original.tryUse(amount)(multiplier)
} yield usedResult.isDefined

とすると良いと思います。

Comment on lines +25 to +30
def tryConsume(
amount: ManaAmount
)(manaMultiplier: ManaMultiplier): Option[LevelCappedManaAmount] = {
manaAmount.tryConsume(amount)(manaMultiplier).map(LevelCappedManaAmount(_, level))
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ManaAmount.scalatryConsume 関数に対して書いたレビューと同様なので理由は省略しますが、tryConsume 関数は必要ないと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants